iT邦幫忙

1

網路自動化 (Network Automation) 的一些想法

  • 分享至 

  • xImage
  •  

前言

這篇文章比較像我個人心得,不會有技術分享的部份。我會跟大家分享一些網路自動化概念。

網路自動化標準架構

理論上也許有,但實務上想告訴大家目前應該沒有統一標準或實作法。我們可以想一想我們管理的「網路」跟別人管理的「網路」一樣嗎?即使採用類似的CLOS或3-tier架構,使用的設構廠牌也可能不同。再來每個網管部門對於實施自動化的程度和偏好的技術或工具也不相同;所以現階段網路自動化還是處於每間公司「我說的算」的情況。舉例來說:

  • 我前公司使用Python+Jenkins把建立Checkpoint firewall policy的工作給自動化。寫程式的同事離職後就沒人維護了;因為其他業務也沒有自動化的急迫性,所以自動化的應用也僅限於此。

  • 一般提到自動化,大家第一個反應一般是Ansible,偏偏我老板對Ansible感冒;所以我們用Nornir自已開發幾隻Python程式來處理特定問題。

** 結論:找到一套符合自已組織的自動化(架構|方法|程式|軟體)

Intent-Based Networking, IBN

往下談之前,我們聊聊IBN前;我們重溫一下往日行雲流水敲指令的熱血

c3550(config)#int fa0/2
c3550(config-if)#switchport trunk encapsulation dot1q
c3550(config-if)#switchport mode trunk
c3550(config-if)#switchport trunk allowed vlan remove 5-10,12
c3550(config-if)#switchport trunk allowed vlan add 7
c3550(config-if)#end

但如果要一次改十台交換機呢?我想再熱血的工程師很快就會覺得累,更不用說貼錯指令出包被拉正的回憶。Inten-Based Networking的概念是你先定義好網路的「狀態」,比如:

  • Enable port-secuirity on office switch(uplink除外)。
  • 交換機埠的敘述必須合規特定格式。

接下來由「控制器」負責和網路設備溝通,把你定義的「狀態」實作到你的網路。「控制器」可以是:

  • 函式庫:如Python library Netmiko, Netplam, Capirca, Scrapli。
  • 框架:如Nornir和Ansible。
  • 套裝軟體:如Cisco ACI和Juniper Apstra。

最後我們來看上述的例子演進成:

  • All office switch enable port-security,server farm switch則沒有。
  • 有工程師的commit失敗了,原因是交換機埠的敘述不合規必須更正。

從一萬公尺高空看網路自動化架構

我們對IBN有一些概念之後,我們來看看網路自動化的HLD(High-Level Design)。注意!這張圖只是協助大家了解一般的概念,並不是所有的自動化都是這樣實作的。

  1. 我們會維護一個SSOT(Single Source of Truth)系統來定義網路的「狀態」。目前最熱門的套件是Netbox
  2. 我們會對「控制器」的「API」發出命令,最常見的協定為Rest,JSON-RPC,XML-RPC。
  3. 「控制器」從SSOT取得Network status。
  4. 「控制器」代替我們去存取設備。因為設備支援的協定不同,所以「控制器」可以用SSH, gNMI, netCONF等等去連結設備。
  5. 設備回傳資料給「控制器」,一般為JSON|YAML|XML三種格式。
  6. 「控制器」回傳給使用者,這邊控制器可以整合諸如新世代的網管工具。

https://ithelp.ithome.com.tw/upload/images/20230809/20152488oSvdVFo58I.jpg

結論

謝謝大家耐心讀完,這篇文章只能代表我個人的觀點和解讀。如果你有不同的實作方式,很歡迎加入討論;畢竟有不同的觀點也能提點我更進一步的思考。


圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言